/**
 * 
 */
package de.midnightdance.model.character;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * @author Surfer
 *
 */
public class CharacterRequiemVampir extends CharacterRequiemGhul {
	
	//familiaeres	
	protected String 							clan;
	protected String 							bund;	
	protected CharacterRequiemVampir          	erschaffer;
	protected List<CharacterRequiemVampir>    	kinder;
	//gesellschaft
	protected String 							titel;
	protected String 							position;
	protected List<String> 						trophaeen;   	
	// jagd und Zuflucht
	protected JagdTechnik 		  				jagdtechnik;
	protected String 							revier;
	protected String 							herde;	
	//tugend und suende	
	protected int              					rasereien;
	//werte
	protected int 								potestas;	
	protected int					 			regeneration;
	
	public CharacterRequiemVampir() {
		super();
		kinder 		= new ArrayList<CharacterRequiemVampir>();
		trophaeen 	= new ArrayList<String>();
	}

	/* (non-Javadoc)
	 * @see de.cbf.util.uuidheader.entities.UUIDHeader#takeOverEntityData(de.cbf.util.uuidheader.entities.UUIDHeader)
	 */
	@Override
	protected void takeOverEntityData(Object aOther) {
		super.takeOverEntityData(aOther);
		if (aOther instanceof CharacterRequiemVampir) {
			CharacterRequiemVampir otherVampir = (CharacterRequiemVampir) aOther;
			//listen
			kinder 			= new ArrayList<CharacterRequiemVampir>(otherVampir.kinder);
			trophaeen 		= new ArrayList<String>(otherVampir.trophaeen);
			//
			clan 			= otherVampir.clan;
			bund 			= otherVampir.bund;	
			erschaffer 		= otherVampir.erschaffer;
			titel 			= otherVampir.titel;
			position 		= otherVampir.position;			
			jagdtechnik 	= otherVampir.jagdtechnik;
			revier 			= otherVampir.revier;
			herde 			= otherVampir.herde;					
			rasereien 		= otherVampir.rasereien;			
			potestas 		= otherVampir.potestas;	
			regeneration 	= otherVampir.regeneration;
		}
	}

	public Iterator<CharacterRequiemVampir> getKinderIterator(){
		return kinder.iterator();
	}	
	public CharacterRequiemVampir[] getKinder() {
		return kinder.toArray(new CharacterRequiemVampir[kinder.size()]);
	}	
	public void setKinder(CharacterRequiemVampir[] value) {
		kinder.clear();
		kinder.addAll(Arrays.asList(value));
	}
	public boolean addKind(CharacterRequiemVampir value){
		return kinder.add(value);
	}
	public boolean removeKind(CharacterRequiemVampir value){
		return kinder.remove(value);
	}
	public boolean removeKind(CharacterRequiemID value){
		return kinder.remove(value);
	}
	
	public Iterator<String> getTrophaeenIterator(){
		return trophaeen.iterator();
	}
	public String[] getTrophaeen() {
		return trophaeen.toArray(new String[trophaeen.size()]);
	}	
	public void setTrophaeen(String[] value) {
		trophaeen.clear();
		trophaeen.addAll(Arrays.asList(value));
	}
	public boolean addTrophaee(String value){
		return trophaeen.add(value);
	}
	public boolean removeTrophaee(String value){
		return trophaeen.remove(value);
	}
	/**
	 * @return the clan
	 */
	public String getClan() {
		return clan;
	}

	/**
	 * @param clan the clan to set
	 */
	public void setClan(String clan) {
		this.clan = clan;
	}

	/**
	 * @return the bund
	 */
	public String getBund() {
		return bund;
	}

	/**
	 * @param bund the bund to set
	 */
	public void setBund(String bund) {
		this.bund = bund;
	}

	/**
	 * @return the erschaffer
	 */
	public CharacterRequiemVampir getErschaffer() {
		return erschaffer;
	}

	/**
	 * @param erschaffer the erschaffer to set
	 */
	public void setErschaffer(CharacterRequiemVampir erschaffer) {
		this.erschaffer = erschaffer;
	}

	/**
	 * @return the titel
	 */
	public String getTitel() {
		return titel;
	}

	/**
	 * @param titel the titel to set
	 */
	public void setTitel(String titel) {
		this.titel = titel;
	}

	/**
	 * @return the position
	 */
	public String getPosition() {
		return position;
	}

	/**
	 * @param position the position to set
	 */
	public void setPosition(String position) {
		this.position = position;
	}

	/**
	 * @return the jagdtechnik
	 */
	public JagdTechnik getJagdtechnik() {
		return jagdtechnik;
	}

	/**
	 * @param jagdtechnik the jagdtechnik to set
	 */
	public void setJagdtechnik(JagdTechnik jagdtechnik) {
		this.jagdtechnik = jagdtechnik;
	}

	/**
	 * @return the revier
	 */
	public String getRevier() {
		return revier;
	}

	/**
	 * @param revier the revier to set
	 */
	public void setRevier(String revier) {
		this.revier = revier;
	}

	/**
	 * @return the herde
	 */
	public String getHerde() {
		return herde;
	}

	/**
	 * @param herde the herde to set
	 */
	public void setHerde(String herde) {
		this.herde = herde;
	}

	/**
	 * @return the rasereien
	 */
	public int getRasereien() {
		return rasereien;
	}

	/**
	 * @param rasereien the rasereien to set
	 */
	public void setRasereien(int rasereien) {
		this.rasereien = rasereien;
	}

	/**
	 * @return the potestas
	 */
	public int getPotestas() {
		return potestas;
	}

	/**
	 * @param potestas the potestas to set
	 */
	public void setPotestas(int potestas) {
		this.potestas = potestas;
	}

	/**
	 * @return the regeneration
	 */
	public int getRegeneration() {
		return regeneration;
	}

	/**
	 * @param regeneration the regeneration to set
	 */
	public void setRegeneration(int regeneration) {
		this.regeneration = regeneration;
	}
	
	
	

	

	
	
	
	
}
